import { request } from './http';
import type { Protocol } from './types';

/**
 * gss订单产品
 */
export interface OrderProduct {
  productId?: number; // 产品ID
  siteCityName?: string; // site城市名称
  siteId?: string; // Google place id
  siteLocation?: string; // site经纬度
  siteName?: string; // 地点名称
  siteAddress?: string; // 地点地址
  targetCityName?: string; // target城市名称
  targetId?: string; // target place id
  targetName?: string; // target名称
  targetLocation?: string; // target经纬度
  targetAddress?: string; // target地址
  networkType?: string; // 网络接入类型：Global Internet Access、Point-To-Point Connectivity、Cloud and DC Interconnect
  productType?: string; // 产品类型：精品网、CN2专线、SDIA
  carrierType?: string; // 运营商类型：移动、电信、联通
  bandwidth?: string; // 宽带速率
  freeIp?: number; // 免费IP个数
  nrc?: number; // 一次性费用:Non-Recurring Charge
  broadbandRent?: number; // 宽带月租
  ipType?: string; // IP地址类型
  ipRent?: number; // IP地址的月租价格
  cpeRent?: number; // CPE月租价格
  rentalMonths?: number; // 月数
  totalAmount?: number; // 总价
  remark?: string; // 备注
  advance?: boolean; // 是否包含 advance
  sla?: string; // sla
  mttr?: string; // mttr
  interfaceType?: string; // Interface
  leadTime?: number; // Lead Time
  lastMileTechnology?: string; // Last Mile Technology
  quoteSubtype?: string; // Quote Subtype
  isDel?: number; // 删除状态 0：未删除，1：删除
  createdAt?: string; // 创建时间
  modifiedAt?: string; // 修改时间
}

/**
 * 产品订单
 */
export interface Order {
  id?: number; // 自增主键id
  type?: string; // 订单类型
  userId?: number; // 用户编号
  orderNumber?: string; // 订单编号
  customerCode?: string; // 客户编号
  customerEmail?: string; // 客户邮箱
  customerName?: string; // 客户全称
  customerTel?: string; // 客户电话
  customerAddress?: string; // 客户地址
  gssEmail?: string; // gss邮箱
  gssName?: string; // gss全称
  gssTel?: string; // gss电话
  gssAddress?: string; // gss地址
  totalAmount?: number; // 总价
  remark?: string; // 备注
  ip?: string; // 下单ip
  products?: OrderProduct[]; // 订单产品列表
  isDel?: number; // 删除状态 0：未删除，1：删除
  createdAt?: string; // 创建时间
  modifiedAt?: string; // 修改时间
}

export function saveOrder(order: Order): Promise<Protocol<Order>> {
  return request.json<Protocol<Order>>(`/api/order/save`, order);
}

export function orderDetail(id: number, sessionId: string): Promise<Protocol<Order>> {
  return request.get<Protocol<Order>>(`/api/order/detail`, { id, sessionId });
}

export function sendEmail(orderId: number, file: File): Promise<Protocol<boolean>> {
  const formData = new FormData();
  formData.append('orderId', orderId.toString()); // 注意：非文件字段需转字符串
  formData.append('file', file); // 文件字段直接传入 File 对象
  return request.multipart<Protocol<boolean>>(`/api/order/email/send`, formData);
}
